package uebungsblatt06.aufgabe12;

import java.util.ArrayList;

public class Zugriffsverwaltung
{
	private Nutzer aktuellerNutzer;
	private ArrayList<Nutzer> nutzer;
	
	public Zugriffsverwaltung()
	{
		nutzer = new ArrayList<Nutzer>();
		aktuellerNutzer = new Systemadministrator("First User", "admin");
		nutzer.add(aktuellerNutzer);
	}
	
	public boolean authentifizieren(String login, String passwort)
	{
		for(Nutzer n : nutzer)
			if(n.getLogin().equals(login) && n.getPasswort().equals(passwort))
			{
				aktuellerNutzer = n;
				return true;
			}
		return false;
	}
	
	public boolean entwicklerHinzufuegen(String login, String passwort)
	{
		if(aktuellerNutzer.darfNutzerAnlegen())
		{
			nutzer.add(new Entwickler(login, passwort));
			return true;
		}
		return false;
	}
	
	public boolean loginAendern(String altesLogin, String neuesLogin)
	{
		if(aktuellerNutzer.darfNutzerAnlegen())
			for(Nutzer n : nutzer)
				if(n.getLogin().equals(altesLogin))
				{
					n.setLogin(neuesLogin);
					return true;
				}
		return false;
	}
	
	public void nutzerAnzeigen()
	{
		for(Nutzer n : nutzer)
		{
			System.out.println("Login: "+n.getLogin());
			System.out.println("Passwort: "+n.getPasswort());
			if(n.darfDatenBearbeiten())
				System.out.println("Datenbearbeitung erlaubt.");
			if(n.darfNutzerAnlegen())
				System.out.println("Anlegen eines Nutzers erlaubt.");
			if(n.darfTabellenBearbeiten())
				System.out.println("Tabellenbearbeitung erlaubt.");
			System.out.println();
		}
	}
	
	public boolean passwortAendern(String altesPasswort, String neuesPasswort)
	{
		if(aktuellerNutzer != null && aktuellerNutzer.getPasswort().equals(altesPasswort))
		{
			aktuellerNutzer.setPasswort(neuesPasswort);
			return true;
		}
		return false;
	}
	
	public boolean projektadministratorHinzufuegen(String login, String passwort)
	{
		if(aktuellerNutzer.darfNutzerAnlegen())
		{
			nutzer.add(new Projektadministrator(login, passwort));
			return true;
		}
		return false;
	}
	
	public boolean systemadministratorHinzufuegen(String login, String passwort)
	{
		if(aktuellerNutzer.darfNutzerAnlegen())
		{
			nutzer.add(new Systemadministrator(login, passwort));
			return true;
		}
		return false;
	}
}
